package com.thx.addressbook.service;

import com.thx.addressbook.dao.AddressbookGroupDao;
import com.thx.addressbook.model.AddressbookGroup;
import com.thx.common.service.BaseManager;
import com.thx.common.util.AppContext;

import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;



@Service
@Transactional(readOnly = true)
public class AddressbookGroupService extends BaseManager<AddressbookGroup> {

  private static final Logger logger = LoggerFactory.getLogger(AddressbookGroupService.class);

  @Autowired
  private AddressbookGroupDao addressbookGroupDao;

  /**
   * 根通信录名称、所属租户id、所属分类id、用户id查询分组对象分页列表.
   * 
   * @param agName 分组名称,可以为空
   * @param enterpriseId 所属租户id,不能为空
   * @param acId 所属分类id,不能为空
   * @param personnelId 用户id,不能为空
   * @return 分页分组列表
   */
  public List<AddressbookGroup> findByAgnameAndEnterpriseProperties(String agName,
      Long enterpriseId, Long acId, Long personnelId) {
    Long perAddCategoryId = NumberUtils.toLong(AppContext.getProperties("perAddCategoryId"));
    if (acId.intValue() == perAddCategoryId.intValue()) {
      return addressbookGroupDao.findByPersonnelId(enterpriseId, acId, personnelId, agName);
    } else {
      return addressbookGroupDao.findByAgnameAndEnterpriseProperties(agName, enterpriseId, acId);
    }
  }

  /**
   * 根通信录名称、所属租户id、所属分类id、用户id查询分组对象全部列表.
   * 
   * @param agName 分组名称,可以为空
   * @param enterpriseId 所属租户id,不能为空
   * @param acId 所属分类id,不能为空
   * @param personnelId 用户id,不能为空
   * @return 全部分组列表
   */
  public List<AddressbookGroup> findAllByAgnameAndEnterpriseProperties(String agName,
      Long enterpriseId, Long acId, Long personnelId) {
    Long perAddCategoryId = NumberUtils.toLong(AppContext.getProperties("perAddCategoryId"));
    if (acId.intValue() == perAddCategoryId.intValue()) {
      return addressbookGroupDao.findAllByPersonnelId(enterpriseId, acId, personnelId, agName);
    } else {
      return addressbookGroupDao.findAllByAgnameAndEnterpriseProperties(agName, enterpriseId, acId);
    }

  }
  //
  // /**
  // * 根据个人id、个人通用分组id、人员所属租户Id查询该用户所有个人分组
  // * @param enterpriseId
  // * @param perAcId
  // * @param personnelId
  // * @return
  // */
  // public List<AddressbookGroup> findAllByPersonnelId(Long enterpriseId,Long perAcId, Long
  // personnelId,String ageName) {
  // return addressbookGroupDao.findAllByPersonnelId(enterpriseId, perAcId, personnelId,ageName);
  // }
  //
  // /**
  // * 根据个人id、个人通用分组id、人员所属租户Id查询该用户个人分组分页数据
  // * @param enterpriseId
  // * @param perAcId
  // * @param personnelId
  // * @return
  // */
  // public List<AddressbookGroup> findByPersonnelId(Long enterpriseId,Long perAcId, Long
  // personnelId,String ageName) {
  // return addressbookGroupDao.findByPersonnelId(enterpriseId, perAcId, personnelId,ageName);
  // }
  // /**
  // * 查询通信录分组列表页
  // * 建立日期 : Apr 18, 2013 <br>F
  // * 作者 : 王阿敏<br>
  // * @param info
  // * @param page
  // * @return
  // */
  // @Override
  // public Page<AddressbookGroupInter> queryAllByCondition(
  // AddressbookGroupInter info, Page<AddressbookGroupInter> page,Long pId) {
  // page.setResult(addressbookGroupDao.queryAllByConditionRole(pId,(AddressbookGroup)info,
  // page.getStart(),
  // page.getMax()));
  // page.setCount(addressbookGroupDao.queryCountRole(pId,(AddressbookGroup)info));
  // return page;
  // }
  //
  // public List<AddressbookGroupInter> queryAllByConditionRole(AddressbookGroupInter info,Long
  // pId,int start,int max) {
  // return addressbookGroupDao.queryAllByConditionRole(pId,(AddressbookGroup)info,start,max);
  // }
  //
  // public int queryCountRole(Long pId ,AddressbookGroupInter info) {
  // return addressbookGroupDao.queryCountRole(pId,(AddressbookGroup)info);
  // }
  //
  // public List<AddressbookGroup> queryAllByConditionRole(AddressbookGroup info,Long pId){
  // return addressbookGroupDao.queryAllByConditionRole(info,pId);
  // }
  // /**
  // * 授权分页
  // * 建立日期 : Jun 19, 2013 7:28:17 PM<br>
  // * 作者: 孙耀飞<br>
  // * 模块 : <br>
  // * 描述 : <br>
  // * 1 <br>
  // * 2 <br>
  // */
  // public Page<AddressbookGroupInter> queryAllByConditionRole(
  // AddressbookGroupInter info, Page<AddressbookGroupInter> page,Long pId) {
  // page.setResult(addressbookGroupDao.queryAllByConditionRole(pId,(AddressbookGroup)info,
  // page.getStart(),
  // page.getMax()));
  // page.setCount(addressbookGroupDao.queryCountRole(pId,(AddressbookGroup)info));
  // return page;
  // }
  // /**
  // * 保存或修改通信录分组信息
  // * 建立日期 : Apr 18, 2013 <br>
  // * 作者 : 王阿敏<br>
  // * @param addressbookGroup
  // */
  // @Transactional(readOnly = false)
  // public void saveOrUpdate(AddressbookGroup addressbookGroup){
  // this.addressbookGroupDao.saveOrUpdate(addressbookGroup);
  // }
  // @Transactional(readOnly = false)
  // public void saveOrUpdate(AddressbookGroupInter addressbookGroup){
  // this.addressbookGroupDao.saveOrUpdate(addressbookGroup);
  // }
  // public List<AddressbookGroupInter> queryAll(Long personnelId,String pacid,Long enterpriseId) {
  // return addressbookGroupDao.queryAll(personnelId,pacid,enterpriseId);
  // }
  //
  // public AddressbookGroup findById(Long agId){
  // AddressbookGroup addressbookGroup = new AddressbookGroup();
  // addressbookGroup = this.addressbookGroupDao.findById(agId);
  // return addressbookGroup;
  // }
  // public Map<Long,AddressbookGroup> findAllMap(){
  // Map<Long,AddressbookGroup> maps= new TreeMap<Long, AddressbookGroup>();
  // List<AddressbookGroupInter> addressbookGroups = addressbookGroupDao.findAll();
  // for(AddressbookGroupInter addressbookGroup:addressbookGroups){
  // maps.put(addressbookGroup.getAgId(), (AddressbookGroup)addressbookGroup);
  // }
  // return maps;
  // }
  //// public List<AddressbookGroup> queryByacId(Long acId) {
  //// return addressbookGroupDao.queryByacId(acId);
  //// }
  // /**
  // * 查询分组信息
  // * 建立日期 : Apr 18, 2013 <br>
  // * 作者 : 王阿敏<br>
  // * @param entity
  // * @return
  // */
  // @Override
  // public AddressbookGroupInter queryGroupOne(AddressbookGroupInter entity) {
  // return addressbookGroupDao.queryGroupOne((AddressbookGroup)entity);
  // }
  //
  // public List<AddressbookGroupInter> findAll() {
  // return addressbookGroupDao.findAll();
  // }
  // /**
  // * @创建日期 2013-4-19<br>
  // * @作者: wangamin <br>
  // * @描述: 根通信录名称验证通信录是否存在<br>
  // */
  // @Override
  // public int getCategoryName(AddressbookGroupInter entity) {
  // AddressbookGroupInter f = addressbookGroupDao.findByAgnameAndEnterpriseProperties(null, null,
  // null);
  // if(f!=null){
  // return 1;
  // }
  // return 0;
  // }
  // /**
  // *
  // * @author zhangyong
  // * @date 2013-4-15 下午06:19:22
  // * @param acView
  // * @return
  // */
  // public List<AddressbookGroupInter> queryAllByCondition(AddressbookGroupViewInter acView) {
  // return addressbookGroupDao.queryAllByCondition(acView);
  // }
  //
  // /**
  // * 根据企业id和人员id查找分组
  // * @author 冯晋首
  // * @date 2015年12月7日 下午5:22:19
  // * @param enterpriseId
  // * @param personnelId
  // * @return
  // */
  // public List<AddressbookGroupInter> queryAllByCondition(Long enterpriseId,Long personnelId) {
  // AddressbookGroupView view = new AddressbookGroupView();
  // if(enterpriseId!=null && enterpriseId!=0L){
  // view.setEnterpriseId(enterpriseId);
  // }
  // if(personnelId!=null&& personnelId!=0L){
  // view.setPersonnelId(personnelId);
  // }
  // return addressbookGroupDao.queryAllByCondition(view);
  // }
  //
  // /**
  // *
  // * @author zhangyong
  // * @date 2013-4-15 下午06:19:22
  // * @param acView
  // * @return
  // */
  // public int queryCount(AddressbookGroupView acView) {
  // return addressbookGroupDao.queryCount(acView);
  // }
  // @Transactional(readOnly = false)
  // public void deleteGroupById(Long deptId) {
  // addressbookGroupDao.deleteGroupById(deptId);
  //
  // }
  //
  //
  // /**
  // * 获取某个分组的最后一次的更新时间
  // * @author 冯晋首
  // * @date 2015-6-23 下午2:37:39
  // * @param personnelId
  // * @param acId
  // * @return
  // */
  // public String getGrouplastUpdateTime(Long personnelId,Long acId){
  // return addressbookGroupDao.getGrouplastUpdateTime(personnelId, acId);
  // }
  //
}
